Newer
Older
TheVengeance-Project-IADE-Unity2D / Assets / Scripts / NPC / Boss Sime / BossSlimeLife.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BossSlimeLife : MonoBehaviour
{
    //Files
    private PlayerLevel playerLevel;
    private PlayerGold playerGold;

    //GameObjects
    private GameObject player;
    private GameObject bossObject;
    public GameObject BossSlimeLifeBar;
    public GameObject BossSlimeLifeText;

    //Ints
    public int life = 10;
    public int bossmaxlife = 100;

    //Bools
    public bool dead;

    public bool flashActive;
    [SerializeField]
    public float flashLength = 0f;
    [SerializeField]
    public float flashCounter = 0f;
    private SpriteRenderer bossSprite;

    public void Start()
    {
        //GameObjects
        player = GameObject.FindGameObjectWithTag("Player");
        bossObject = GameObject.FindGameObjectWithTag("Boss Slime");

        //Files
        playerLevel = FindObjectOfType<PlayerLevel>(); // to access the Player Level file
        playerGold = FindObjectOfType<PlayerGold>(); // to access the Player Gold

        //Bools
        dead = false;
    }

    public void Update()
    {
        Vector3 boss = new Vector3(transform.position.x, transform.position.y, transform.position.z); // to calculate the distance
        Vector3 Ppos = new Vector3(player.transform.position.x, player.transform.position.y, transform.position.z); // to calculate the distance
        if (life <= 0) // to destroy the enemy if life is 0
        {
            playerLevel.exp += 110;
            playerGold.gold += 100;

            Destroy(gameObject);
            Destroy(BossSlimeLifeBar);
            Destroy(BossSlimeLifeText);
        }
        if (life > bossmaxlife) // to make sure that the enemy doesn't have more life than the max life
        {
            life = bossmaxlife;
        }
        if (Vector3.Distance(boss, Ppos) > 14.2f) // enemy regenrate life once the player is away
        {
            life = bossmaxlife;
        }

        if (flashActive)
        {
            if (flashCounter > flashLength * .99f)
            {
                bossSprite.color = new Color(bossSprite.color.r, bossSprite.color.g, bossSprite.color.b, 0f);
            }
            else if (flashCounter > flashLength * .82f)
            {
                bossSprite.color = new Color(bossSprite.color.r, bossSprite.color.g, bossSprite.color.b, 1f);
            }
            else if (flashCounter > flashLength * .66f)
            {
                bossSprite.color = new Color(bossSprite.color.r, bossSprite.color.g, bossSprite.color.b, 0f);
            }
            else if (flashCounter > flashLength * .49)
            {
                bossSprite.color = new Color(bossSprite.color.r, bossSprite.color.g, bossSprite.color.b, 1f);
            }
            else if (flashCounter > flashLength * .33)
            {
                bossSprite.color = new Color(bossSprite.color.r, bossSprite.color.g, bossSprite.color.b, 0f);
            }
            else if (flashCounter > flashLength * .16f)
            {
                bossSprite.color = new Color(bossSprite.color.r, bossSprite.color.g, bossSprite.color.b, 1f);
            }
            else if (flashCounter > 0f)
            {
                bossSprite.color = new Color(bossSprite.color.r, bossSprite.color.g, bossSprite.color.b, 0f);
            }
            else
            {
                bossSprite.color = new Color(bossSprite.color.r, bossSprite.color.g, bossSprite.color.b, 1f);
                flashActive = false;
            }
            flashCounter -= Time.deltaTime;
        }
    }
}